﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WCFVeterinaria;

public partial class Medicos : System.Web.UI.Page
{
    ServiceVeterinaria vet = new ServiceVeterinaria();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["username"] == null)
        {
            Response.Redirect("/Login.aspx");
        }
        if (!IsPostBack)
        {
            CargarMedicos();
        }
    }

    private void CargarMedicos()
    {
        MedicosGridView.DataSource = vet.listarMedicos();
        MedicosGridView.DataBind();
    }

    protected void MedicosGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType != DataControlRowType.DataRow)
            return;

        DataRowView item = (DataRowView)(e.Row.DataItem);


        // if editing row
        if (((GridView)sender).EditIndex != e.Row.RowIndex)
        {
            string idRegister = Convert.ToString(item.Row["nro_colegiado"]);
            HiddenField idRegisterHiddenField = (HiddenField)e.Row.FindControl("IdRegisterHiddenField");
            idRegisterHiddenField.Value = idRegister;

            ((System.Web.UI.WebControls.LinkButton)(e.Row.Cells[0].Controls[0])).Text = "Editar";
            ((System.Web.UI.WebControls.LinkButton)(e.Row.Cells[0].Controls[2])).Text = "Eliminar";
            ((System.Web.UI.WebControls.LinkButton)(e.Row.Cells[0].Controls[2])).Attributes.Add("onclick", "return ConfirmDelete();");

            if (String.IsNullOrEmpty(idRegister))
            {
                ((System.Web.UI.WebControls.LinkButton)(e.Row.Cells[0].Controls[0])).Visible = false;
                ((System.Web.UI.WebControls.LinkButton)(e.Row.Cells[0].Controls[2])).Visible = false;
            }

            Label nombreEditarLabel = (Label)e.Row.FindControl("NombreEditarLabel");
            Label direccionEditarLabel = (Label)e.Row.FindControl("DireccionEditarLabel");
            Label emailEditarLabel = (Label)e.Row.FindControl("EmailEditarLabel");
            Label telefonoEditarLabel = (Label)e.Row.FindControl("TelefonoEditarLabel");

            nombreEditarLabel.Text = Convert.ToString(item.Row["nombre"]) + " " + Convert.ToString(item.Row["apellidos"]);
            direccionEditarLabel.Text = Convert.ToString(item.Row["direccion"]);
            emailEditarLabel.Text = Convert.ToString(item.Row["email"]);
            telefonoEditarLabel.Text = Convert.ToString(item.Row["telefono_celular"]);

        }
        else
        {
            ((System.Web.UI.WebControls.LinkButton)(e.Row.Cells[0].Controls[0])).Text = "Guardar";
            ((System.Web.UI.WebControls.LinkButton)(e.Row.Cells[0].Controls[2])).Text = "Cancelar";

            string idRegister = Convert.ToString(item.Row["nro_colegiado"]);
            HiddenField idRegisterHiddenField = (HiddenField)e.Row.FindControl("IdRegisterHiddenField");
            idRegisterHiddenField.Value = idRegister;
            IdMedicoHiddenField.Value = idRegister.ToString();


            TextBox nombreEditarTextBox = (TextBox)e.Row.FindControl("NombreEditarTextBox");
            TextBox apellidoEditarTextBox = (TextBox)e.Row.FindControl("ApellidoEditarTextBox");
            TextBox direccionEditarTextBox = (TextBox)e.Row.FindControl("DireccionEditarTextBox");
            TextBox emailEditarTextBox = (TextBox)e.Row.FindControl("EmailEditarTextBox");
            TextBox telefonoEditarTextBox = (TextBox)e.Row.FindControl("TelefonoEditarTextBox");

            nombreEditarTextBox.Text = Convert.ToString(item.Row["nombre"]);
            apellidoEditarTextBox.Text = Convert.ToString(item.Row["apellidos"]);
            direccionEditarTextBox.Text = Convert.ToString(item.Row["direccion"]);
            emailEditarTextBox.Text = Convert.ToString(item.Row["email"]);
            telefonoEditarTextBox.Text = Convert.ToString(item.Row["telefono_celular"]);
        }


    }
    protected void MedicosGridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        DeleteRegister(e);
        // terminate editing mode ...
        MedicosGridView.EditIndex = -1;
        IdMedicoHiddenField.Value = string.Empty;
        // search again
        CargarMedicos();
    }
    protected void MedicosGridView_RowEditing(object sender, GridViewEditEventArgs e)
    {
        MedicosGridView.EditIndex = e.NewEditIndex;
        CargarMedicos();
    }
    protected void MedicosGridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        MedicosGridView.EditIndex = -1;
        IdMedicoHiddenField.Value = string.Empty;
        // search again
        CargarMedicos();
    }
    protected void MedicosGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        UpdateRegister(e);
        // terminate editing mode ...
        MedicosGridView.EditIndex = -1;
        // search again
        CargarMedicos();
    }
    protected void MedicosGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        MedicosGridView.PageIndex = e.NewPageIndex;
        CargarMedicos();
    }
    protected void AgregarButton_Click(object sender, EventArgs e)
    {
        int numColegiado = 0;
        int.TryParse(NumColegiadoTextBox.Text, out numColegiado);
        string nombreMed = NombreMedicoTextBox.Text;
        string apellido = ApellidosTextBox.Text;
        string direccion = DireccionTextBox.Text;
        string telefono = TelefonoTextBox.Text;
        string email = EmailTextBox.Text;
        try
        {

            vet.agregarMedico(numColegiado, nombreMed, apellido, telefono, email, direccion);
            string message = "alert('Medico creado con éxito')";
            ScriptManager.RegisterClientScriptBlock((sender as Control), this.GetType(), "alert", message, true);
            CargarMedicos();
            LimpiarCampos();
        }
        catch (Exception)
        {
            string message = "alert('Hubo un error al insertar, intente más luego')";
            ScriptManager.RegisterClientScriptBlock((sender as Control), this.GetType(), "alert", message, true);
        }

    }

    private void LimpiarCampos()
    {
        NumColegiadoTextBox.Text = NombreMedicoTextBox.Text = ApellidosTextBox.Text = DireccionTextBox.Text = TelefonoTextBox.Text = EmailTextBox.Text = string.Empty;
    }



    private void UpdateRegister(GridViewUpdateEventArgs e)
    {

        GridViewRow row = MedicosGridView.Rows[e.RowIndex];
        int numero = Convert.ToInt32(((HiddenField)row.FindControl("IdRegisterHiddenField")).Value);
        string nombre = ((TextBox)row.FindControl("NombreEditarTextBox")).Text;
        string apellido = ((TextBox)row.FindControl("ApellidoEditarTextBox")).Text;
        string direccion = ((TextBox)row.FindControl("DireccionEditarTextBox")).Text;
        string email = ((TextBox)row.FindControl("EmailEditarTextBox")).Text;
        string telefono = ((TextBox)row.FindControl("TelefonoEditarTextBox")).Text;


        //// edit medico

        try
        {
            vet.actualizarMedico(numero, nombre, apellido, telefono, email, direccion);
            string message = "alert('Medico actualizado con éxito')";
            ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "alert", message, true);
            //Response.Redirect(Request.RawUrl);
        }
        catch (Exception)
        {
            string message = "alert('Error al actualizar médico, intente más tarde')";
            ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "alert", message, true);
            return;
        }


    }


    private void DeleteRegister(GridViewDeleteEventArgs e)
    {
        // get data
        GridViewRow row = MedicosGridView.Rows[e.RowIndex];
        HiddenField idRegisterHiddenField = (HiddenField)row.FindControl("IdRegisterHiddenField");
          int idRegister;
          if (!Int32.TryParse(idRegisterHiddenField.Value, out idRegister))
          {
              string message = "alert('La operación fue cancelada. No se pudo determinar el identificador del item')";
              ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "alert", message, true);
              return;
          }
          try
          {
              vet.eliminarMedico(idRegister);
              string message = "alert('Se borró el registro con éxito')";
              ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "alert", message, true);
              //Response.Redirect(Request.RawUrl);
          }

          catch
          {
              string message = "alert('Error al borrar médico, intente más tarde')";
              ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "alert", message, true);
              return;
          }
    }
}